package cn.hy.机考.part02;

import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.Scanner;

/**
 * @author hy
 *
 * 十五、磁盘容量排序
 * 磁盘的容量单位常用的有 M，G，T 这三个等级，关系为 1T = 1024G、1G = 1024M 如样例所示先输入磁盘的个数，
 * 再依次输入磁盘的容量大小，然后按照从小到大 的顺序对磁盘容量进行排序并输出。
 *  3
 * 1G
 * 2G
 * 1024M
 * 输出 1G 1024M 2G
 *
 * 3
 * 2G4M
 * 3M2G
 * 1T
 * 输出
 * 3M2G
 * 2G4M
 * 1T
 *
 *
 */
public class Demo15 {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        while (sc.hasNext()) {
            int num = Integer.parseInt(sc.nextLine());
            List<String> list = new ArrayList<>();
            //将比较的字符储存到list。然后重写list的排序
            for (int i = 0 ; i < num ; i++) {
                list.add(sc.nextLine());
            }
            list.sort(new Comparator<String>() {
                @Override
                public int compare(String str1, String str2) {
                    return count(str1) - count(str2);
                }
            });
            for (String ss : list) {
                System.out.println(ss);
            }
        }
    }
    public static int count(String str) {
        int sum = 0;
        String[] strs = str.toUpperCase().split("[A-Z]");
        int length = 0;//储存每个字符中字母所在的位置
        for (int i = 0 ; i < strs.length ; i++) {
            length += strs[i].length();
            char c = str.charAt(length);
            int num = Integer.parseInt(strs[i]);

            switch (c) {
                case 'M':
                    sum += num ;
                    break;
                case 'G' :
                    sum += num * 1024;
                    break;
                case 'T' :
                    sum += num * 1024 * 1024;
                    break;
            }
            length++;
        }
        return sum;
    }
}
